package cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.time.LocalDateTime;

@Schema(description = "管理后台 - 分销用户 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BrokerageUserRespVO extends BrokerageUserBaseVO {

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Long id;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

    /**
     * 商家认证类型:0-未认证，1-已认证
     */
    @Schema(description = "商家认证类型")
    private Integer businessType;
    /**
     * 商家是否属于用户
     */
    @Schema(description = "商家是否属于用户")
    private Integer userBusiness;
    /**
     * 商家属于用户开始时间
     */
    @Schema(description = "商家属于用户开始时间")
    private LocalDateTime businessStartTime;
    /**
     * 商家属于用户结束时间
     */
    @Schema(description = "商家属于用户结束时间")
    private LocalDateTime businessEndTime;

    /**
     * 团长认证类型:0-未认证，1-已认证
     */
    @Schema(description = "团长认证类型")
    private Integer teamType;
    /**
     * 团长是否属于用户
     */
    @Schema(description = "团长是否属于用户")
    private Integer userTeam;
    /**
     * 团长属于用户开始时间
     */
    @Schema(description = "团长属于用户开始时间")
    private LocalDateTime teamStartTime;
    /**
     * 团长属于用户结束时间
     */
    @Schema(description = "团长属于用户结束时间")
    private LocalDateTime teamEndTime;

    // ========== 用户信息 ==========

    @Schema(description = "地区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Long areaId;

    @Schema(description = "地区名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京市")
    private String areaName;

    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.krcorecms.com/xxx.png")
    private String avatar;

    @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    private String nickname;

    @Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    private String name;

    @Schema(description = "用户手机", requiredMode = Schema.RequiredMode.REQUIRED, example = "13800138000")
    private String mobile;

    @Schema(description = "是否商家", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer isBusiness;

    @Schema(description = "是否团长", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer isTeam;

    @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime teamOverTime;

    @Schema(description = "开通时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime teamOpenTime;


    // ========== 推广信息 ========== 注意：是包括 1 + 2 级的数据

    @Schema(description = "推广用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Integer brokerageUserCount;

    @Schema(description = "推广订单数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Integer brokerageOrderCount;

    @Schema(description = "推广订单金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Integer brokerageOrderPrice;

    // ========== 提现信息 ==========

    @Schema(description = "已提现金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Integer withdrawPrice;

    @Schema(description = "已提现次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
    private Integer withdrawCount;

    // ========== 商家信息 ==========

    @Schema(description = "开通时间")
    private LocalDateTime openTime;

    @Schema(description = "结束时间")
    private LocalDateTime overTime;

    @Schema(description = "过期时间")
    private LocalDateTime expirationTime;
    /**
     * 公司名称
     */
    @Schema(description = "公司名称")
    private String companyName;
}
